package com.jfs.security.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.jfs.entity.User;
import com.jfs.result.Result;
import com.jfs.security.dto.DropUserDto;
import com.jfs.security.dto.UserDto;
import com.jfs.security.vo.*;
import org.springframework.security.core.userdetails.UserDetailsService;

import java.util.List;

/**
 * @Description 用户操作数据库接口
 * @E-mail cwm3412638@163.com
 * @Author cwm
 * @Date 2022/8/5
 */
public interface UserService extends IService<User>, UserDetailsService {
    /**
     * 条件查询用户列表
     *
     * @param userListVo
     * @return
     */
    IPage<UserDto> list(UserListVo userListVo);

    /**
     * 添加用户
     *
     * @param addUserVo
     */
    Result<Object> save(AddUserVo addUserVo);

    /**
     * 修改用户
     *
     * @param updateUserVo
     */
    Result<Object> update(UpdateUserVo updateUserVo);

    /**
     * 禁用用户
     *
     * @param disableUserVo
     */
    Result<Object> disable(DisableUserVo disableUserVo);

    /**
     * 删除用户
     *
     * @param disableUserVo
     */
    Result<Object> delete(DisableUserVo disableUserVo);

    /**
     * 用户修改密码
     * @param updateUserPasswordVo
     * @return
     */
    Result<Object> updatePassword(LoginUserEntity loginUserEntity, UpdateUserPasswordVo updateUserPasswordVo);

    /**
     * 退出登录
     * @return
     */
    Result<Object> logOut(LoginUserEntity loginUserEntity);

    /**
     * 获取当前登录用户信息
     * @param loginUserEntity
     * @return
     */
    Result<Object> info( LoginUserEntity loginUserEntity);

    /**
     * 启用用户
     * @param disableUserVo
     * @return
     */
    Result<Object> enable(DisableUserVo disableUserVo);

    /**
     * 获取用户下拉列表
     * @return
     */
    List<DropUserDto> drop();
}
